Ext.require(['*']);

Ext.define('itemModel', {
	extend: 'Ext.data.Model',
	fields: [
		{name: 'nombreItem',     type: 'string'},
		{name: 'idItem',     type: 'string'},
		{name: 'codItem', type: 'string'},
		{name: 'complejidadItem', type: 'string'},
		{name: 'descripcionItem', type: 'string'},
		{name: 'idTipoItem', type: 'string'},
		{name: 'nombreTipoItem', type: 'string'},
		{name: 'versionItem', type: 'string'},
		{name: 'estadoItem', type: 'string'},
	]
});

Ext.define('relacionModel', {
	extend: 'Ext.data.Model',
	fields: [
		{name: 'idRelacion',     type: 'string'},
		{name: 'item',     type: 'string'},
		{name: 'tipoRelacion', type: 'string'},
		{name: 'duenho', type: 'boolean'},
	]
});

Ext.define('RelacionesLiveSearchGridPanel', {
    extend: 'Ext.ux.LiveSearchGridPanel',
    
    initComponent: function() {
        
        //Ext.Msg.alert('Estoy en el initComponet del live!!!');
        var me = this;
        me.tbar = ['Buscar',{
                 xtype: 'textfield',
                 name: 'searchField',
                 hideLabel: true,
                 width: 200,
                 listeners: {
                     change: {
                         fn: me.onTextFieldChange,
                         scope: this,
                         buffer: 100
                     }
                 }
            }, {
                xtype: 'button',
                text: '<',
                tooltip: 'Anterior',
                handler: me.onPreviousClick,
                scope: me
            },{
                xtype: 'button',
                text: '>',
                tooltip: 'Siguiente',
                handler: me.onNextClick,
                scope: me
            }, '-', {
                xtype: 'checkbox',
                hideLabel: true,
                margin: '0 0 0 4px',
                handler: me.regExpToggle,
                scope: me                
            }, 'Expresión Regular', {
                xtype: 'checkbox',
                hideLabel: true,
                margin: '0 0 0 4px',
                handler: me.caseSensitiveToggle,
                scope: me
            }, 'Detectar Mayúsculas'];
        
        me.callParent(arguments);
    }
});

Ext.define('App.view.Relaciones', {
	extend: 'Ext.panel.Panel',
    alias: 'widget.tabfirst',
	layout:'anchor',

	initComponent: function () {
		
		this.myIdItem = idItemAux;
        this.myNombreItem = nombreItemAux;
		this.myIdFase = idFaseAux;
        this.myNombreFase = nombreFaseAux;
        this.myNombreProyecto = nombreProyectoAux;
        
        this.store = Ext.create('Ext.data.Store', {
			storeId: 'relacionesStore',
			model: 'relacionModel',
			proxy: {
				type: 'ajax',
				url: '/relaciones/view',
				reader: {
					type: 'json',
					root: 'relaciones'
				}
			},
			idItem: this.myIdItem,
			autoLoad: {start: 0, limit: 25, params:{idItem: this.myIdItem}} 
			
		});
		
		this.estadoItem = null;
        
        Ext.Ajax.request(
		{
			url:'/relaciones/viewEstadoItem',
			//form:"[STICK FORM ID HERE]",
			method:'GET',
			scope : this,
			params: { idItem: this.myIdItem},
			success: function(response, opts) {
				//alert("successfull");
				obj = Ext.decode(response.responseText)	
				this.estadoItem = obj.estado
			},
			failure:function(res,opt) {
				alert("request failed");
			}
		});
		
		
		this.autorizacionesJson = null;
		
		//hacemos la llamada ajax para obtener la autorizacion de funcionalidades de usuarios
		Ext.Ajax.request(
		{
			url:'/autorizacion/relaciones',
			//form:"[STICK FORM ID HERE]",
			method:'GET',
			scope : this,
			params: { idFase: this.myIdFase},
			//async: false,
			
			async    : false,
			callback : function(opts, success, response) {	
				obj = Ext.decode(response.responseText);
				this.autorizacionesJson = obj.autorizacionesJson;
				
			}
			
		});
        
        //creamos varibales para que los IDs no entren en conflicto
		this.idBtonCrearRelacion = 'btn_grid_crear_relacion' + this.myIdItem;
		this.idBtonEditarRelacion = 'btn_grid_editar_relacion' + this.myIdItem;
		this.idBtonEliminarRelacion = 'btn_grid_eliminar_relacion' + this.myIdItem;
		this.myAllowAddRelacion = allowAddRelacion;
		this.myIdTabItem = idTabItem;
		
		this.Tblgrid2 = Ext.create('Ext.toolbar.Toolbar',{
			defaults: { hidden: true },
			items : [
				{
					xtype : 'button',
					id : this.idBtonCrearRelacion,
					itemId : this.idBtonCrearRelacion,
					text : 'Crear Relacion',
					iconCls : 'icon_button_add',
					disabled : this.myAllowAddRelacion,
					tooltip : 'Crea una relacion para el item seleccionado',
					scope : this,
					hidden: this.autorizacionesJson.CREACION_RELACION,
					handler : this.CrearRelacionRecordSelect
				},
				{
					xtype : 'tbseparator'
				},
				{
					xtype : 'button',
					id : this.idBtonEditarRelacion,
					itemId : this.idBtonEditarRelacion,
					text : 'Editar Relacion',
					icon:'static/images/edit.png',
					disabled : true,
					tooltip : 'Modifica una relacion del item',
					scope : this,
					hidden: this.autorizacionesJson.EDICION_RELACION,
					handler : this.EditarRelacionRecordSelect
				},
				{
					xtype : 'tbseparator'
				},
				{
					xtype : 'button',
					id : this.idBtonEliminarRelacion,
					itemId : this.idBtonEliminarRelacion,
					text : 'Eliminar Relacion',
					icon:'static/images/delete.png',
					disabled : true,
					tooltip : 'Elimina una relacion del item',
					scope : this,
					hidden: this.autorizacionesJson.ELIMINACION_RELACION,
					handler : this.EliminarRelacionRecordSelect
				}
			]
		});
		
		this.grid = Ext.create(/*'Ext.grid.Panel'*/ 'RelacionesLiveSearchGridPanel', {
			
			title: this.myNombreProyecto + ' | ' + this.myNombreFase + ' | ' + this.myNombreItem,
			frame : true,
			store : this.store,
			stripeRows : true,
			columnLines: true,
			loadMask : true,
			//width : 550,
			//height : 400,
			anchor: '100% 90%', 
			//features: [this.grouping],
			dockedItems : [this.Tblgrid2,
				Ext.create('Ext.ux.StatusBar', {
				defaultText: this.defaultStatusText,
				name: 'searchStatusBar'
				})
			],
			columns: 
			[
				{
					//text: 'id',
					hidden: true,
					dataIndex: 'idRelacion',
					flex: 1
				},
				{
					text: 'Item Relacionado',
					dataIndex: 'item',
					flex: 1
				},
				{
					text: 'Tipo Relacion',
					dataIndex: 'tipoRelacion',
					flex: 1
				},
				{
					xtype: 'booleancolumn', 
					text: 'Dueño',
					trueText: 'SI',
					falseText: 'NO', 
					dataIndex: 'duenho'
				}
					
			],
			bbar: Ext.create('Ext.PagingToolbar', {
				store : this.store,
				displayInfo : true,
				displayMsg : 'Mostrando registros {0} - {1} de {2}',
				emptyMsg : "Sin registros para mostrar",
				
				doRefresh : function(){
					var store = this.store;
					store.loadPage(store.currentPage, 
						{
							params: 
							{
								idItem: store.idItem
							}
						}
					
					
					);
				},
				
			}),
			listeners:{
				scope:this,     	
				'selectionchange': function(view, records) {
					
					if(this.grid.getSelectionModel().getSelection()[0] != null){
						if (this.estadoItem == 'ACTIVO'){
							if( this.grid.getSelectionModel().getSelection()[0].data.duenho == true ){
								
								Ext.getCmp(this.idBtonEditarRelacion).setDisabled(false);
								Ext.getCmp(this.idBtonEliminarRelacion).setDisabled(false);		
							
							}else{
								Ext.getCmp(this.idBtonEditarRelacion).setDisabled(true);
								Ext.getCmp(this.idBtonEliminarRelacion).setDisabled(true);			
									
							}
						}else{
							Ext.getCmp(this.idBtonEditarRelacion).setDisabled(true);
							Ext.getCmp(this.idBtonEliminarRelacion).setDisabled(true);
						}
					}else{
						Ext.getCmp(this.idBtonEditarRelacion).setDisabled(true);
						Ext.getCmp(this.idBtonEliminarRelacion).setDisabled(true);
					}
					//Ext.getCmp(this.idBtonEditarRelacion).setDisabled(false);
					/*Ext.getCmp('btn_grid_ver_item').setDisabled(false);
					Ext.getCmp('btn_grid_editar_item').setDisabled(false);
					Ext.getCmp('btn_grid_eliminar_item').setDisabled(false);
					Ext.getCmp('btn_grid_historial_item').setDisabled(false);
					
					//agregado por victor
					Ext.getCmp('btn_grid_relaciones').setDisabled(false);*/
					
				}
				   
			}
			
		});
		
		this.items = [this.grid];
        this.callParent(arguments);
	},
	
	CrearRelacionRecordSelect: function(){
		
		var tiposRelacion = ["Padre - Hijo", "Antecesor - Sucesor"]
		
		//ComboBox para mostrar los tipos de relacion
		this.cmbTiposRelacion = Ext.create(/*'Ext.form.ComboBox'*/'Ext.ux.form.field.BoxSelect', {
						
			fieldLabel: 'Tipo de Relacion',
			name : 'cmb_tiposRelacion',
			id: 'id_cmb_tiposRelacion',
			//displayField: 'nombreTipoItem',
			width: 500,
			//height: 70,
			//labelWidth: 130,
			store: tiposRelacion,
			queryMode: 'local',
			emptyText: 'Seleccione un Tipo de Relacion',
			//valueField: 'idTipoItem',
			multiSelect :false,
			allowBlank : false,
			listeners:{
				scope: this,
				'select': function(combo, rec, idx){
					//onUpdateClick(combo, rec, idx)
					console.log(combo);
					console.log(rec);
					console.log(idx);
					tipoRelacionEnviar = combo.value;
					console.log(tipoRelacionEnviar);
					
					//traemos los items a relacionar de acuerdo al tipo seleccionado
					Ext.Ajax.request(
					{
						url:'/relaciones/traerItemsCrear',
						//form:"[STICK FORM ID HERE]",
						method:'GET',
						scope : this,
						params: { 
							tipoRelacion: tipoRelacionEnviar,
							nombreProyecto: this.myNombreProyecto,
							idFase: this.myIdFase,
							idItem: this.myIdItem	  
						},
						success: function(response, opts) {
							//alert("successfull");
							obj = Ext.decode(response.responseText)
							
							panelExiste = Ext.getCmp('id_datos_fields_item');
							
							if(panelExiste != null){
								panelExiste.destroy();
							}
							
							if(tipoRelacionEnviar == 'Padre - Hijo'){
								fieldLabel = 'Padres';
							}else{
								fieldLabel = 'Antecesores';
							}
							items = obj.items;
							//console.log(atributos);
							
							
							console.log('cantidad de items');
							console.log(items.length);
							
							var dsCmbItems = Ext.create('Ext.data.Store', {
								model : 'itemModel'
								//autoLoad : true
							});
							
							var cmbItems = Ext.create(/*'Ext.form.ComboBox'*/'Ext.ux.form.field.BoxSelect', {
								fieldLabel: fieldLabel,
								name : 'cmb_padres_antecesores',
								id: 'id_cmbx_padres_antecesores',
								displayField: 'nombreItem',
								width: 500,
								//height: 70,
								//labelWidth: 130,
								store: dsCmbItems,
								queryMode: 'local',
								emptyText: 'Seleccione el padre/antecesor del item',
								valueField: 'idItem',
								multiSelect :false,
								allowBlank : false
							});
							
							dsCmbItems.loadData(items);
							
							/*campos = [];
							
							for(index in atributos){
								//console.log(atributos[index]);
								
								this.tipoAux = null;
								anchorAux = '80%';
								if(atributos[index].tipo == 'FECHA'){
									anchorAux = '40%';
									this.tipoAux = 'datefield';
								}
								
								if(atributos[index].tipo == 'NUMERICO'){
									console.log('encontre un numericoooo!!')
									
									anchorAux = '40%';
									this.tipoAux = 'numberfield';
									console.log('tipoAux en if de nuemrico')
									console.log(this.tipoAux)
									//minValue: 0,
								}
								
								if(atributos[index].tipo == 'CADENA'){
									//anchorAux = '40%';
									this.tipoAux = 'textfield';
									//minValue: 0,
								}
								
								console.log('antes de hacer push')
								console.log(this.tipoAux)
								
								campos.push
								(
									{
										fieldLabel:atributos[index].nombre, 
										name: 'campo' + index, 
										xtype : this.tipoAux, 
										anchor: anchorAux,
										tipoDato: atributos[index].tipo
									}
								);
							}*/
							
							
							Ext.getCmp('id_panel_crear_relacion').add(Ext.widget('closablefieldset', {
								columnWidth: 0.5,
								id:'id_datos_fields_item',
								title: 'Nueva Relacion',
								collapsible: true,
								defaultType: 'textfield',
								defaults: { anchor: '100%' },
								layout: 'anchor',
								items: cmbItems
							}));
							
							console.log('componentes!!!!');
							console.log(Ext.getCmp('id_datos_fields_item').items.items);
							console.log('componentes!!!!');
							
							
							
						},
						failure:function(res,opt) {
							alert("request failed");
						}
					});
					
				}                           
			}

		});
		
		//Creamos el FormPanel que contendra los datos a agregar
		this.FormCrearRelacionModal = Ext.create('Ext.form.Panel',{
			frame :true,
			title : 'Relacion',
			name: 'panel_crear_relacion',
			id: 'id_panel_crear_relacion',
			bodyStyle :'padding:5px 5px 0',
			width : 550,
			//height : 300,
			autoHeight:true,
			defaultType: 'textfield',
			items: 
			[
				{
					xtype: 'closablefieldset',
					columnWidth: 0.5,
					title: 'Item',
					//collapsible: true,
					defaultType: 'textfield',
					defaults: { anchor: '100%' },
					layout: 'anchor',
					items: 
					[
						{
							fieldLabel: 'Código',
							xtype: 'displayfield',
							allowBlank: false,
							name: 'codigo_item_ver_field',
							id: 'id_codigo_item_ver_field',
							anchor: '70%',
							//disabled: true
							
						},
						{
							fieldLabel: 'Version',
							name: 'version_item_ver_field',
							id: 'id_version_item_ver_field',
							//xtype: 'textfield',
							//allowBlank: false,
							anchor: '40%',
							xtype: 'displayfield'
							//disabled: true
						},
						{
							fieldLabel: 'Nombre',
							allowBlank: false,
							name: 'nombre_item_ver_field',
							id: 'id_nombre_item_ver_field',
							anchor: '70%',
							xtype: 'displayfield'
							//disabled: true
							
						},
						{
							xtype : 'fieldcontainer',
							anchor: '70%',
							labelStyle : 'font-weight:bold;padding:0',
							items: [
								this.cmbTiposRelacion,
							]
						}
					]
				}
			],
			buttons: 
			[
				{
					text : 'Guardar',
					id : 'id_btn_add_guardar_relacion',
					iconCls : 'icon_button_save',
					scope : this,
					handler : this.HandlerGuardarRelacionItem
				},{
					text : 'Cancelar',
					id : 'id_btn_add_cancelar_relacion',
					icon:'static/images/cancel.png',
					scope : this,
					handler : function(){
						this.WindowFormCrearRelacionModal.close();
					}
				}	
			]
		});
		
		
		//Una vez creado el FormPanel lo reseteamos
		this.FormCrearRelacionModal.getForm().reset();
		
		
		//traemos el item
		Ext.Ajax.request(
		{
			url:'/relaciones/traerItem',
			//form:"[STICK FORM ID HERE]",
			method:'GET',
			scope : this,
			params: { 
				idItem: this.myIdItem
			},
			success: function(response, opts) {
				//alert("successfull");
				obj = Ext.decode(response.responseText)
				
				//panelExiste = Ext.getCmp('id_datos_fields_item');
				
				//if(panelExiste != null){
					//panelExiste.destroy();
				//}
				
				itemDatos = obj.item;
				//console.log(atributos);
				
				
				//console.log('cantidad de atributos');
				//console.log(atributos.length);
				
				//setamos los campos a mostrar
				Ext.getCmp('id_codigo_item_ver_field').setValue(itemDatos.codItem);
				Ext.getCmp('id_nombre_item_ver_field').setValue(itemDatos.nombreItem);
				Ext.getCmp('id_version_item_ver_field').setValue(itemDatos.versionItem);
						
				/*camposMostrar = [];
				
				for(index in atributosMostrar){
					//console.log(atributos[index]);
					
					this.tipoAux = null;
					valorAux = null;
					anchorAux = '80%';
					if(atributosMostrar[index].tipo == 'FECHA'){
						anchorAux = '40%';
						//this.tipoAux = 'datefield';
						
						console.log('>>>fecha en if')
						console.log(atributosMostrar[index].valor)
						
						valorAux = atributosMostrar[index].valor;
					}
					
					if(atributosMostrar[index].tipo == 'NUMERICO'){
						console.log('encontre un numericoooo!!')
						
						anchorAux = '40%';
						//this.tipoAux = 'numberfield';
						//console.log('tipoAux en if de nuemrico')
						//console.log(this.tipoAux)
						//minValue: 0,
						valorAux = atributosMostrar[index].valor;
						
					}
					
					if(atributosMostrar[index].tipo == 'CADENA'){
						//anchorAux = '40%';
						//this.tipoAux = 'textfield';
						//minValue: 0,
						valorAux = atributosMostrar[index].valor;
					}
					
					camposMostrar.push
					(
						{
							fieldLabel:atributosMostrar[index].nombre, 
							name: 'campo' + index, 
							xtype : 'displayfield',//this.tipoAux, 
							anchor: anchorAux,
							tipoDato: atributosMostrar[index].tipo,
							value: valorAux,														
							//disabled:true,
							format : 'd-F-Y',
							
						}
					);
				}*/
				
			},
			failure:function(res,opt) {
				alert("request failed");
			}
		});
		
		
		//Creamos la ventana que contendra el FormaPanel creado anteriormente
		this.WindowFormCrearRelacionModal = Ext.create('Ext.window.Window',{
			title : 'Crear Relacion',
			bodyStyle : 'padding:10px 10px 10px 10px',
			region : 'center',
			width : 580,
			//height : 400,
			autoHeight:true,
			modal : true,
			resizable : false,
			draggable : false,
			closable : true,
			closeAction : 'destroy',
			items : [this.FormCrearRelacionModal]
		});
		//Mostramos la ventana con el formulario de edicion y los datos del registro seleccionado
		this.WindowFormCrearRelacionModal.show();
		
	},
	
	//metodo que guarda una nueva relacion
	HandlerGuardarRelacionItem:function(){
		if (this.FormCrearRelacionModal.getForm().isValid()){
			this.FormCrearRelacionModal.getForm().submit({
				method : 'POST',
				url : '/relaciones/create', 
				clientValidation : true,
				scope : this,
				params : {
					tipoRelacion : Ext.getCmp('id_cmb_tiposRelacion').getValue(),
					idItem: this.myIdItem,  
					idItemRelacionar: Ext.getCmp('id_cmbx_padres_antecesores').getValue()
				},
				success: function(form, action){
					var obj = Ext.JSON.decode(action.response.responseText);
					this.WindowFormCrearRelacionModal.close();

					
					this.myIdItem = obj.idNuevoItem;
					this.store.idItem = this.myIdItem;
					
					this.store.load(
						{
							params:
							{
								idItem: this.myIdItem,
							}
						}
					);
					
					
					//aca lo que se hace es actulizar automaticamente la grilla de items del item elegido
					this.tabs = Ext.getCmp('tabsGlobales');
					var tab = this.tabs.child('#' + this.myIdTabItem);
					
					console.log('tab de items de la fase!!!!');
					console.log(tab);
					tab.grid.store.load(
						{
							params:
							{
								idFase: this.myIdFase,
							}
						}
					);
					
				},
				failure: function(form, action){
					Ext.Msg.alert("Error",action.result);
					Ext.MessageBox.show({
						title : 'Info',
						msg : action.result.msg,
						buttons : Ext.MessageBox.OK,
						icon : Ext.MessageBox.INFO,
						width : 350
					});
					this.WindowFormCrearRelacionModal.close();
				} 
			});
		}
	},
	
	EditarRelacionRecordSelect: function(){
		registroSeleccionado = this.grid.getSelectionModel().getSelection()[0].data;
		if (registroSeleccionado.tipoRelacion == 'Padre-Hijo'){
			tipoRelacion = "Padre - Hijo";
			fieldLabel = 'Hijo';
			fieldLabel2 = 'Padre';
			itemRelacionado = registroSeleccionado.item;
		}else{
			tipoRelacion = "Antecesor - Sucesor";
			fieldLabel = 'Sucesor';
			fieldLabel2 = 'Antecesor';
			itemRelacionado = registroSeleccionado.item;	
		}
		
		var dsCmbItems = Ext.create('Ext.data.Store', {
			model : 'itemModel'
			//autoLoad : true
		});
		
		var cmbItems = Ext.create(/*'Ext.form.ComboBox'*/'Ext.ux.form.field.BoxSelect', {
			fieldLabel: fieldLabel2,
			name : 'cmb_padres_antecesores',
			id: 'id_cmbx_padres_antecesores',
			displayField: 'nombreItem',
			width: 500,
			//height: 70,
			//labelWidth: 130,
			store: dsCmbItems,
			queryMode: 'local',
			emptyText: 'Seleccione el padre/antecesor del item',
			valueField: 'idItem',
			multiSelect :false,
			allowBlank : false
		});
		
		//traemos los items a relacionar de acuerdo al tipo seleccionado
		Ext.Ajax.request(
		{
			url:'/relaciones/traerItemsEditar',
			//form:"[STICK FORM ID HERE]",
			method:'GET',
			scope : this,
			params: { 
				tipoRelacion: tipoRelacion,
				nombreProyecto: this.myNombreProyecto,
				idFase: this.myIdFase,
				idItem: this.myIdItem	  
			},
			success: function(response, opts) {
				//alert("successfull");
				obj = Ext.decode(response.responseText)
				
				items = obj.items;
				//console.log(atributos);
				
				
				console.log('cantidad de items');
				console.log(items.length);
				
				dsCmbItems.loadData(items);
				
				for (item in items){
					if (items[item].nombreItem == itemRelacionado){
						Ext.getCmp('id_cmbx_padres_antecesores').setValue(items[item].idItem);
					}
				}
				
			},
			failure:function(res,opt) {
				alert("request failed");
			}
		});
		
		//Creamos el FormPanel que contendra los datos a editar
		this.FormEditarRelacionModal = Ext.create('Ext.form.Panel',{
			frame :true,
			title : 'Relacion',
			name: 'panel_editar_relacion',
			id: 'id_panel_editar_relacion',
			bodyStyle :'padding:5px 5px 0',
			width : 550,
			//height : 300,
			autoHeight:true,
			defaultType: 'textfield',
			items: 
			[
				{
					xtype: 'closablefieldset',
					columnWidth: 0.5,
					title: 'Datos',
					//collapsible: true,
					defaultType: 'textfield',
					defaults: { anchor: '100%' },
					layout: 'anchor',
					items: 
					[
						{
							fieldLabel: 'Tipo de Relación',
							xtype: 'displayfield',
							allowBlank: false,
							name: 'tipo_relacion_field',
							id: 'id_tipo_relacion_field',
							anchor: '70%',
							//disabled: true
							
						},
						{
							xtype : 'fieldcontainer',
							anchor: '70%',
							labelStyle : 'font-weight:bold;padding:0',
							items: [
								cmbItems,
							]
						},
						{
							fieldLabel: fieldLabel,
							name: 'hijo_sucesor_field',
							id: 'id_hijo_sucesor_field',
							//xtype: 'textfield',
							//allowBlank: false,
							anchor: '40%',
							xtype: 'displayfield'
							//disabled: true
						},
						{
							fieldLabel: 'Dueño',
							allowBlank: false,
							name: 'duenho_field',
							id: 'id_duenho_field',
							anchor: '70%',
							xtype: 'displayfield'
							//disabled: true
							
						}
					]
				}
			],
			buttons: 
			[
				{
					text : 'Guardar',
					id : 'id_btn_edit_guardar_relacion',
					iconCls : 'icon_button_save',
					scope : this,
					handler : this.HandlerEditarRelacionItem
				},{
					text : 'Cancelar',
					id : 'id_btn_edit_cancelar_relacion',
					icon:'static/images/cancel.png',
					scope : this,
					handler : function(){
						this.WindowFormEditarRelacionModal.close();
					}
				}	
			]
		});

		//Una vez creado el FormPanel lo reseteamos
		this.FormEditarRelacionModal.getForm().reset();
		
		//setamos los campos a mostrar
		Ext.getCmp('id_tipo_relacion_field').setValue(tipoRelacion);
		Ext.getCmp('id_hijo_sucesor_field').setValue(this.myNombreItem);
		Ext.getCmp('id_duenho_field').setValue(this.myNombreItem);
		
		//Creamos la ventana que contendra el FormaPanel creado anteriormente
		this.WindowFormEditarRelacionModal = Ext.create('Ext.window.Window',{
			title : 'Editar Relacion',
			bodyStyle : 'padding:10px 10px 10px 10px',
			region : 'center',
			width : 580,
			//height : 400,
			autoHeight:true,
			modal : true,
			resizable : false,
			draggable : false,
			closable : true,
			closeAction : 'destroy',
			items : [this.FormEditarRelacionModal]
		});
		//Mostramos la ventana con el formulario de edicion y los datos del registro seleccionado
		this.WindowFormEditarRelacionModal.show();
	},
	
	HandlerEditarRelacionItem:function(){
		registroSeleccionado = this.grid.getSelectionModel().getSelection()[0].data;
		if (this.FormEditarRelacionModal.getForm().isValid()){
			this.FormEditarRelacionModal.getForm().submit({
				method : 'POST',
				url : '/relaciones/edit',
				clientValidation : true,
				scope : this,
				params : {
					tipoRelacion: Ext.getCmp('id_tipo_relacion_field').getValue(),
					idItemRelacionar: Ext.getCmp('id_cmbx_padres_antecesores').getValue(),  
					idItem: this.myIdItem,
					idRelacion: registroSeleccionado.idRelacion
				},
				success: function(form, action){
					var obj = Ext.JSON.decode(action.response.responseText);
					this.WindowFormEditarRelacionModal.close();
					
					this.myIdItem = obj.idNuevoItem;
					this.store.idItem = this.myIdItem;
					
					this.store.load(
						{
							params:
							{
								idItem: this.myIdItem,
							}
						}
					);
					
					//aca lo que se hace es actulizar automaticamente la grilla de items del item elegido
					this.tabs = Ext.getCmp('tabsGlobales');
					var tab = this.tabs.child('#' + this.myIdTabItem);
					
					console.log('tab de items de la fase!!!!');
					console.log(tab);
					tab.grid.store.load(
						{
							params:
							{
								idFase: this.myIdFase,
							}
						}
					);
					
				},
				failure: function(form, action){
					Ext.Msg.alert("Error",action.result);
					Ext.MessageBox.show({
						title : 'Info',
						msg : action.result.msg,
						buttons : Ext.MessageBox.OK,
						icon : Ext.MessageBox.INFO,
						width : 350
					});
					this.WindowFormEditarRelacionModal.close();
				} 
			});
		}
	},
	
	EliminarRelacionRecordSelect: function(){
		Ext.MessageBox.show({
			title : "Información del sistema",
			msg : "¿Realmente desea eliminar la relacion seleccionada?",
			buttons : Ext.MessageBox.YESNO,
			icon : Ext.MessageBox.INFO,
			scope : this,
			fn : this.PersistirEliminarRelacion,
			width : 400
		});
	},
	
	PersistirEliminarRelacion: function(btn){
		if (btn == 'yes') { //btn=='yes'
			
			relacionSeleccionada = this.grid.getSelectionModel().getSelection()[0].data;
			Ext.Ajax.request({
				url : '/relaciones/delete', 
				method : 'POST',
				scope : this,
				params : {
					idRelacion : relacionSeleccionada.idRelacion,
					tipoRelacion : relacionSeleccionada.tipoRelacion
				},
				success: function(response, opts) { //success
					var obj = Ext.JSON.decode(response.responseText);
					
					this.myIdItem = obj.idNuevoItem;
					this.store.idItem = this.myIdItem;
					
					if(obj.success==true){
						this.store.load(
						{
							params:
							{
								idItem: this.myIdItem,
							}
						});
						
						//aca lo que se hace es actulizar automaticamente la grilla de items del item elegido
						this.tabs = Ext.getCmp('tabsGlobales');
						var tab = this.tabs.child('#' + this.myIdTabItem);
						
						console.log('tab de items de la fase!!!!');
						console.log(tab);
						tab.grid.store.load(
							{
								params:
								{
									idFase: this.myIdFase,
								}
							}
						);
												
					}
					else if(obj.success==false){
						Ext.MessageBox.show({
							title : "Informacion del sistema",
							msg : obj.msg,
							buttons : Ext.MessageBox.OK,
							icon : Ext.MessageBox.INFO,
							width : 400
						});
					}
					else{
						//this.WindowAdmUsuarios.el.unmask();
						Ext.MessageBox.show({
							title : "Informacion del sistema",
							msg : "Mensaje de error alternativo a la eliminacion del registro seleccionado",
							buttons : Ext.MessageBox.OK,
							icon : Ext.MessageBox.ERROR,
							width : 400
						});
					}
				}, //success
				failure: function(response, opts) { //failure
					//this.WindowAdmUsuarios.el.unmask();
					var obj = Ext.JSON.decode(response.responseText);
						Ext.MessageBox.show({
							title : "Informacion del sitema",
							msg : "Error de conexion al servidor de la base de datos",
							buttons : Ext.MessageBox.OK,
							icon : Ext.MessageBox.ERROR,
							width : 400
						});
				} //failure
			});
		}else{
	
		}
		
		
	},
	
});
